package com.itheima.richtext;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.StyleSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        TextView contentTv = (TextView) findViewById(R.id.tv_content);
        EditText contentEt=(EditText)findViewById(R.id.et_content);

        //  1. 通过html标签 来设置 颜色  ,链接等
   /*     String source= "<font color='#ff0000'>谷歌</font>," +
        		       "<font color='#00ff00'>苹果</font>," +
        		       "<big>微软</big>, <b>华为</b>," +
        		       "<a href=\"http://www.baidu.com\">百度</a>" + "<a href=\"http://www.23code.com\">爱上代码</a>" +
        		       "等<font color='0000ff'>32家大公司</font>觉得很赞...";*/
     String source= r("谷歌") + "，"+g("苹果")+"，微软， 华为，"+getlink("腾讯", "http://www.qq.com")+"等"+r("32家大公司")+"觉得很赞...";
        /**该接口继承了CharSequence接口
         * 用来标记要添加到区域中的对象
         * Spanned:格式化或者样式化
         */
        Spanned spanned =  Html.fromHtml(source);
        //假如TextView或者EditText要支持点击链接，则 要设置该方法
        contentTv.setMovementMethod(LinkMovementMethod.getInstance());
        contentTv.setText(spanned);
       
        /**
         * 2. 通过SpannableString 设置 
         * 介绍： SpannableString 与String差不多，但是可以通过setSpan()方法设置各种格式或者样式
         */

        SpannableString msp=new SpannableString("天生我才必有用,android15期,开源中国团队开发,分为6组[抓狂]");
        /**对字符设置样式：
         * what:object :设置样式的类型
         * start： 设置字符序列的起始点
         * end： 实战字符序列的结束点
         * flags ：设置是否包含端点
         *      Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含两端start和end所在的端点              (a,b)
				Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含端start，但包含end所在的端点       (a,b]
				Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含端start，但不包含end所在的端点       [a,b)
				Spanned.SPAN_INCLUSIVE_INCLUSIVE--- 包含两端start和end所在的端点                     [a,b]
         */
        //设置字号 ,20为像素值  2
        msp.setSpan(new AbsoluteSizeSpan(20), 0, 2,   Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        //设置字号 ，true 表示  字体的单位为dp
        msp.setSpan(new AbsoluteSizeSpan(20,true), 2, 4,  Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        
        //设置链接
        msp.setSpan(new URLSpan("http://www.taobao.com"), 4, 7, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        
        //设置字体的样式
        
        msp.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 7, 15, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

        //设置前背景
        msp.setSpan(new ForegroundColorSpan(Color.RED), 15, 17, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        //设置背景
        msp.setSpan(new BackgroundColorSpan(Color.BLUE), 18, 20, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        
        //设置下划线
        msp.setSpan(new UnderlineSpan(), 20, 22, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        
        //设置表情图片  [抓狂][偷笑][受伤][装b]
        // 通过比较表情字符串获取图片资源
        Drawable smileDrawable=getResources().getDrawable(R.drawable.pic8);
        //设置图片边界，即图片大小
        smileDrawable.setBounds(0, 0, 80, 80);
        /**ImageSpan：图片样式 
         * ALIGN_BASELINE：与基线对齐
         * ALIGN_BOTTOM:与EditText的底部对齐
         */
        ImageSpan imageSpan=new ImageSpan(smileDrawable,ImageSpan.ALIGN_BOTTOM);
        msp.setSpan(imageSpan, 32, 36,  Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        //假如TextView或者EditText要支持点击链接，则 要设置该方法
        contentEt.setMovementMethod(LinkMovementMethod.getInstance());
        contentEt.setText(msp);
    }
    
    
    
    
    //取红颜色
    //<font color='#ff0000'>谷歌</font>
    public static String r(String source){
    	//对字符串设置格式  ，%s：占位符
    	return String.format("<font color='#FF0000'>%s</font>", source);
    }
    //取颜色
    public static String g(String source){
    	return String.format("<font color='#00FF00'>%s</font>", source);
    }
    
    //取链接
    //  <a href="http://www.baidu.com">百度</a>
    // linkText: 百度    linkUrl：http://www.baidu.com
    public  static String getlink(String linkText,String linkurl){
        // sql ? 占位符
    	return String.format("<a href=\"%s\">%s</a>", linkurl,linkText);
    }
}
